package distribuicaoDeProfessores;

import java.util.ArrayList;

/**
 * 
 * @author Rhelcris e Jaime
 * @author Jaime
 */
public class ProfessoresAlocados {

	private Professor professor;
	private int qtdDisciplinas;
	private ArrayList<Disciplina> disciplinasPegas;
        private ArrayList<Atividades> atividadesPegas;
        private float chD;
        private float chA;
        private float pontos;

	public ProfessoresAlocados(Professor professor) {
		this.professor = professor;
		this.qtdDisciplinas = 0;
                this.chD=0;
                this.chA=0;
                this.pontos = 0;
		this.disciplinasPegas = new ArrayList<Disciplina>();
                this.atividadesPegas = new ArrayList<Atividades>();
	}
//Usadas na etapa Dinamica (2) do trabalho final
    public String listarAtividades(){
        String frase = "\n"+professor.getNome() + ":\n\nLista de disciplinas:\n";
        for (int i = 0; i < disciplinasPegas.size(); i++){
            frase += disciplinasPegas.get(i)+"\n";
        }
        frase += "\n\nLista de Atividades:\n";
       
        for (int i = 0; i < atividadesPegas.size(); i++){
            frase += atividadesPegas.get(i).getNome() + " - " +
                     atividadesPegas.get(i).getCh() +"hs" + " - "+ 
                     atividadesPegas.get(i).getPont()+" pontos;\n";
        }
        frase += "\n\tTOTAL DE PONTOS: " + getPontos() + 
                 "\n\tTOTAL DE HORAS: " + (chA+chD) + "\n";
        
        return frase;
    }
    public ArrayList<Atividades> getAtividadesPegas() {
        return atividadesPegas;
    }
    
    public int addAtividadesPegas(Atividades atividade){
        //retorna o indice armazenado
        atividadesPegas.add(atividade);
        addChA((float)atividade.getCh());
        return atividadesPegas.size()-1;
    }

    public float totalPontoMesmaAtividade(Atividades atividade){
        float total = 0;
        for(int i = 0; i < atividadesPegas.size(); i++){
            if(atividadesPegas.get(i).equals(atividade))
                total = atividadesPegas.get(i).getPont();
        }
        return total;
    }
    
    public void setAtividadesPegas(ArrayList<Atividades> atividadesPegas) {
        this.atividadesPegas = atividadesPegas;
    }

    public float getChA() {
        return chA;
    }

    public void setChA(float ch) {
        this.chA = ch;
    }

     public void addChA(float ch) {
        this.chA += ch;
    }
    
    public float getChD() {
        return chD;
    }

    public void setChD(float ch) {
        this.chD = ch;
    }
    
      public void addChD(float ch) {
        this.chD += ch*2.5;
    }
    
    public float getPontos() {
        calcPontos();
        return pontos;
    }

    public void calcPontos() {
           pontos=(chD/2.5f)*10;
        for (int i = 0; i < atividadesPegas.size(); i++){
            pontos+=atividadesPegas.get(i).getPont();
        }
    }
//__________________Fim dos métodos exclusivos da 2º etapa
	public ProfessoresAlocados() {
		super();
	}

	public void incrementaDisciplinasProfessor() {
		this.qtdDisciplinas++;
	}

	public ArrayList<Disciplina> getDisciplinasPegas() {
		return disciplinasPegas;
	}

	public void adicionarDisciplina(Disciplina novaDisciplina) {
		disciplinasPegas.add(novaDisciplina);
               
	}

	public Professor getProfessor() {
		return professor;
	}

	public int getQtdDisciplinas() {
		return qtdDisciplinas;
	}

	public void setProfessor(Professor professor) {
		this.professor = professor;
	}

	@Override
	public String toString() {
		String lista = "";
		String prioridade = null;
		for (Disciplina disciplina : disciplinasPegas) {

			switch (professor.verificar(disciplina)) {
			case 1:
				prioridade = "alta";
				break;
			case 2:
				prioridade = "media";
				break;
			case 3:
				prioridade = "baixa";
				break;
                        default: prioridade = "Nula";
			}

			if (lista == "") {
				lista = disciplina.getId() + " - " + disciplina.getNome() + 
						" - Periodo: " + disciplina.getPeriodo() + 
						" - Prioridade: " + prioridade;

			} else {
				lista = lista + "\n" + disciplina.getId() + " - "
						+ disciplina.getNome() + " - Periodo: "
						+ disciplina.getPeriodo() 
						+ " - Prioridade: " + prioridade;

			}
		}
		return "Professor: " + this.professor.getNome()
				+ " - quantidade de disciplinas: " + this.qtdDisciplinas
				+ " \nLista de disciplinas: \n" + lista;
	}

}
